package com.demarc.pesquisas.web.mb.pesquisa;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import com.demarc.pesquisas.infraestrutura.persistencia.Filtro;
import com.demarc.pesquisas.negocio.entidade.pesquisa.Pesquisa;
import com.demarc.pesquisas.negocio.service.pesquisa.IPesquisaService;
import com.demarc.pesquisas.negocio.util.ConstantesMensagens;
import com.demarc.pesquisas.web.jsf.ListaObjetoPersistenteDataModel;
import com.demarc.pesquisas.web.mb.AbstractMB;
import com.demarc.pesquisas.web.mb.entrevista.EntrevistaMB;
import com.demarc.pesquisas.web.pagina.ConstantesPaginas;
import com.demarc.pesquisas.web.pagina.OperacaoEnum;

@ManagedBean
@SessionScoped
public class PesquisaMB extends AbstractMB {

    @ManagedProperty(value = "#{pesquisaService}")
    private IPesquisaService pesquisaService;

    @ManagedProperty(value = "#{entrevistaMB}")
    private EntrevistaMB entrevistaMB;

    private Pesquisa pesquisaFiltro;
    private ListaObjetoPersistenteDataModel<Pesquisa> dataModel;

    public String abrirPagina() {
        inicializarPagina();
        return avancarParaPagina(ConstantesPaginas.PESQUISA_LISTAGEM_PAGE);
    }

    @Override
    public String getTituloPagina() {
        return super.getTituloPagina(ConstantesMensagens.LABEL_PESQUISA);
    }

    @Override
    public void inicializarPagina() {
        super.setOperacao(OperacaoEnum.LISTAGEM);
        super.filtro = new Filtro();
        this.pesquisaFiltro = new Pesquisa();
        carregarDataModel();
    }

    public void consultar() {
        filtro.clear();
        filtro.put("nome", pesquisaFiltro.getNome());
    }

    private void carregarDataModel() {
        this.dataModel =
                new ListaObjetoPersistenteDataModel<Pesquisa>(super.filtro, pesquisaService);
    }

    public String enviarParaDetalhe() {
        super.setOperacao(OperacaoEnum.DETALHE);
        entrevistaMB.inicializarPagina();
        return avancarParaPagina(ConstantesPaginas.ENTREVISTA_LISTAGEM_PAGE);
    }

    public void limpar() {
        inicializarPagina();
    }

    // Gets and Sets

    public Pesquisa getPesquisaFiltro() {
        return pesquisaFiltro;
    }

    public void setPesquisaFiltro(Pesquisa pesquisaFiltro) {
        this.pesquisaFiltro = pesquisaFiltro;
    }

    public ListaObjetoPersistenteDataModel<Pesquisa> getDataModel() {
        return dataModel;
    }

    public void setDataModel(ListaObjetoPersistenteDataModel<Pesquisa> dataModel) {
        this.dataModel = dataModel;
    }

    public IPesquisaService getPesquisaService() {
        return pesquisaService;
    }

    public void setPesquisaService(IPesquisaService pesquisaService) {
        this.pesquisaService = pesquisaService;
    }

    public EntrevistaMB getEntrevistaMB() {
        return entrevistaMB;
    }

    public void setEntrevistaMB(EntrevistaMB entrevistaMB) {
        this.entrevistaMB = entrevistaMB;
    }
}
